"""
GCR-Julia Extension for GCR Solver Manager.

This extension provides integration between the GCR Solver Manager (GSM) and the
GCR-Julia package, enabling execution of pure Julia implementations of GCR and
related iterative solvers with GPU acceleration and distributed computing support.

Features:
- Pure Julia GCR, Enhanced GCR, CA-GCR, GMRES, and BCA-GMRES algorithms
- CPU, GPU (CUDA/AMD), and distributed (MPI/PETSc) execution backends
- Comprehensive configuration validation and environment checking
- Performance profiling and benchmarking capabilities
- Automatic fallback for missing dependencies
- Integration with GSM's extension management system

Usage:
    The extension is automatically loaded by GSM when the GCR-Julia package
    is detected. It can be used through GSM commands or programmatically.

Example GSM usage:
    gsm run --extension gcr-julia --config config.yaml

Author: GCR Development Team
Version: 0.1.0
"""

from .extension import GCRJuliaExtension, create_extension
from .builder import GCRJuliaBuilder
from .runner import GCRJuliaRunner
from .validator import GCRJuliaValidator

__version__ = "0.1.0"
__author__ = "GCR Development Team"

__all__ = [
    "GCRJuliaExtension",
    "GCRJuliaBuilder", 
    "GCRJuliaRunner",
    "GCRJuliaValidator",
    "create_extension"
]

# Extension metadata for GSM auto-discovery
EXTENSION_INFO = {
    "name": "gcr-julia",
    "version": __version__,
    "description": "GCR-Julia Pure Julia Solver Framework Extension",
    "author": __author__,
    "entry_point": "GCRJuliaExtension",
    "supported_frameworks": ["julia", "gcr-julia"],
    "supported_solvers": ["gcr", "enhanced-gcr", "ca-gcr", "gmres", "bca-gmres"],
    "supported_backends": ["cpu", "gpu-cuda", "gpu-amdgpu", "petsc-mpi"],
    "requires_julia": True,
    "optional_dependencies": ["CUDA.jl", "AMDGPU.jl", "MPI.jl", "PETSc_jll"],
    "priority": 10,
    "category": "pure_julia_solver"
}